package com.zhang.backend.dto;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.zhang.backend.entity.Person;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_EMPTY) // 如果字段为空（如children），则不序列化
public class GenealogyNodeDTO {

    // ECharts 直接需要的字段，用于显示节点文本和交互
    private String name;
    private Long personId;

    // 完整的业务数据，用于Tooltip等详细信息展示
    private Person person;

    // 子节点列表
    private List<GenealogyNodeDTO> children = new ArrayList<>();

    // 【修正】新增配偶列表
    private List<Person> spouses = new ArrayList<>();

    /**
     * 构造函数，方便地从Person对象创建节点
     * @param person 核心人物
     */
    public GenealogyNodeDTO(Person person) {
        this.person = person;
        this.name = person.getName(); // 将人物姓名直接赋值给ECharts的name字段
        this.personId = person.getPersonId();
    }
}